// PART OF THE MACHINE SIMULATION. DO NOT CHANGE.

package nachos.machine;

/**
 * An event that affects rider software. If a rider is outside the elevators,
 * it will only receive events on the same floor as the rider. If a rider is
 * inside an elevator, it will only receive events pertaining to that elevator.
 */
public final class RiderEvent
{
    public RiderEvent(int event, int floor, int elevator, int direction)
    {
        this.event = event;
        this.floor = floor;
        this.elevator = elevator;
        this.direction = direction;
    }

    /**
     * The event identifier. Refer to the <i>event*</i> constants.
     */
    public final int event;
    /**
     * The floor pertaining to the event, or -1 if not applicable.
     */
    public final int floor;
    /**
     * The elevator pertaining to the event, or -1 if not applicable.
     */
    public final int elevator;
    /**
     * The direction display of the elevator (neither if not applicable).
     */
    public final int direction;

    /**
     * An elevator's doors have opened.
     */
    public static final int eventDoorsOpened = 0;
    /**
     * An elevator's doors were open and its direction display changed.
     */
    public static final int eventDirectionChanged = 1;
    /**
     * An elevator's doors have closed.
     */
    public static final int eventDoorsClosed = 2;
}
